Replicating and distributing a database can increase the availability of, and speed of access to, information stored in the database by making multiple copies of the same information available for read requests, and potentially allowing read and write operations to be performed by different servers. In such a replicated distributed database there are often copies of the same information stored on servers that are not directly connected to one another, but which may be connected by one or more switches, dedicated lines, etc.
In a common replicated distributed database implementation, in order for an operation to be performed on an object, at least a majority of copies of that object must vote (through the server or servers storing the copies) to allow the operation to be performed in accordance with a given consistency model (e.g., strong consistency or eventual consistency). This is sometimes referred to as quorum-based voting. Such an implementation is typically designed so that there are an odd number of copies of each object to prevent ties in voting. For example, if there were an even number of copies of an object, than there could be a situation in which half of the servers storing the copies vote to allow an operation, and the other half do not vote (e.g., because those servers are not in communication with the other servers) or vote to inhibit the operation, thus not forming a majority of the copies of the object. This thus requires that at least three copies of each object be stored in each replicated distributed database, for example as described below in connection with FIG. 11A.
Due to the relatively high price of RAM resources (as of June 2016, RAM prices are ˜200 times higher than HHD (Hard Disk Drive) and ˜20 times higher than SSD (Solid State Disk)), implementing such a replicated database as an in-memory database becomes very expensive because three copies of the same object must be stored in memory.
Accordingly, it is desirable to provide new methods, systems, and media for providing distributed database access during a network split.